package com.rybbaby.tss.platform.sysInterfaceParams.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Version;

import com.rybbaby.tss.core.utils.StringUtils;
import com.rybbaby.tss.platform.sysInterfaceDocument.entity.SysInterfaceDocument;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.GenericGenerator;


/**
 * @description 接口参数
 * 
 * @author 谢进伟
 * 
 * @createDate 2016-11-23 下午11:12:21
 */
@Entity
@Table(name = "sys_interface_params")
@DynamicUpdate(true)
@DynamicInsert(true)
public class SysInterfaceParams implements Serializable {
	
	private static final long serialVersionUID = 53049834907316L;
	
	/** 主键 **/
	private String id;
	/** 文档Id **/
	private String documentId;
	/** 参数数据结构 **/
	private String dataStructure;
	/** 参数名 **/
	private String paramName;
	/** 是否必须 **/
	private Boolean isRequired;
	/** 默认值 **/
	private String defaultValue;
	/** 参数描述 **/
	private String remark;
	/** 创建时间 **/
	private java.sql.Timestamp createTime;
	/** 创建Id **/
	private String createUserId;
	/** 参数类型 **/
	private String type;
	/** 举例 **/
	private String example;
	/** 版本 **/
	private Integer version;
	/** 文档Id **/
	private SysInterfaceDocument document;
	
	/**
	 * 方法: 取得文档Id
	 *
	 * @return SysInterfaceDocument 文档Id
	 */
	@JoinColumn(name = "documentId" , insertable = false , updatable = false)
	@ManyToOne(fetch = FetchType.LAZY , targetEntity = SysInterfaceDocument.class)
	public SysInterfaceDocument getDocument() {
		return this.document;
	}
	
	/**
	 * 方法: 设置文档Id
	 *
	 * @param document 文档Id
	 */
	public void setDocument(SysInterfaceDocument document) {
		this.document = document;
	}
	
	/**
	 * 方法: 取得主键
	 *
	 * @return java.lang.String 主键
	 */
	@Id
	@GeneratedValue(generator = "sys_interface_paramsIDGenerator" , strategy = GenerationType.AUTO)
	@GenericGenerator(name = "sys_interface_paramsIDGenerator" , strategy = "uuid")
	@Column(name = "id", nullable= false, length = 32)
	public String getId() {
		return this.id;
	}
	
	/**
	 * 方法: 设置主键
	 *
	 * @param id 主键
	 */
	public void setId(String id) {
		this.id = id;
	}
	
	/**
	 * 方法: 取得文档Id
	 *
	 * @return java.lang.String 文档Id
	 */
	@Column(name = "documentId", nullable= true, length = 32)
	public String getDocumentId() {
		return this.documentId;
	}
	
	/**
	 * 方法: 设置文档Id
	 *
	 * @param documentId 文档Id
	 */
	public void setDocumentId(String documentId) {
		this.documentId = StringUtils.isBlank(documentId) ? null : documentId;
	}
	
	/**
	 * 方法: 取得参数数据结构
	 *
	 * @return java.lang.String 参数数据结构
	 */
	@Column(name = "dataStructure", nullable= true, length = 50)
	public String getDataStructure() {
		return this.dataStructure;
	}
	
	/**
	 * 方法: 设置参数数据结构
	 *
	 * @param dataStructure 参数数据结构
	 */
	public void setDataStructure(String dataStructure) {
		this.dataStructure = dataStructure;
	}
	
	/**
	 * 方法: 取得参数名
	 *
	 * @return java.lang.String 参数名
	 */
	@Column(name = "paramName", nullable= true, length = 50)
	public String getParamName() {
		return this.paramName;
	}
	
	/**
	 * 方法: 设置参数名
	 *
	 * @param paramName 参数名
	 */
	public void setParamName(String paramName) {
		this.paramName = paramName;
	}
	
	/**
	 * 方法: 取得是否必须
	 *
	 * @return java.lang.Boolean 是否必须
	 */
	@Column(name = "isRequired", nullable= true, length = 1)
	public Boolean getIsRequired() {
		return this.isRequired;
	}
	
	/**
	 * 方法: 设置是否必须
	 *
	 * @param isRequired 是否必须
	 */
	public void setIsRequired(Boolean isRequired) {
		this.isRequired = isRequired;
	}
	
	/**
	 * 方法: 取得默认值
	 *
	 * @return java.lang.String 默认值
	 */
	@Column(name = "defaultValue", nullable= true, length = 255)
	public String getDefaultValue() {
		return this.defaultValue;
	}
	
	/**
	 * 方法: 设置默认值
	 *
	 * @param defaultValue 默认值
	 */
	public void setDefaultValue(String defaultValue) {
		this.defaultValue = defaultValue;
	}
	
	/**
	 * 方法: 取得参数描述
	 *
	 * @return java.lang.String 参数描述
	 */
	@Column(name = "remark", nullable= true, length = 500)
	public String getRemark() {
		return this.remark;
	}
	
	/**
	 * 方法: 设置参数描述
	 *
	 * @param remark 参数描述
	 */
	public void setRemark(String remark) {
		this.remark = remark;
	}
	
	/**
	 * 方法: 取得创建时间
	 *
	 * @return java.sql.Timestamp 创建时间
	 */
	@Column(name = "createTime", nullable= true, length = 19)
	public java.sql.Timestamp getCreateTime() {
		return this.createTime;
	}
	
	/**
	 * 方法: 设置创建时间
	 *
	 * @param createTime 创建时间
	 */
	public void setCreateTime(java.sql.Timestamp createTime) {
		this.createTime = createTime;
	}
	
	/**
	 * 方法: 取得创建Id
	 *
	 * @return java.lang.String 创建Id
	 */
	@Column(name = "createUserId", nullable= true, length = 32)
	public String getCreateUserId() {
		return this.createUserId;
	}
	
	/**
	 * 方法: 设置创建Id
	 *
	 * @param createUserId 创建Id
	 */
	public void setCreateUserId(String createUserId) {
		this.createUserId = createUserId;
	}
	
	/**
	 * 方法: 取得参数类型
	 *
	 * @return java.lang.String 参数类型
	 */
	@Column(name = "type", nullable= true, length = 4)
	public String getType() {
		return this.type;
	}
	
	/**
	 * 方法: 设置参数类型
	 *
	 * @param type 参数类型
	 */
	public void setType(String type) {
		this.type = type;
	}
	
	/**
	 * 方法: 取得举例
	 *
	 * @return java.lang.String 举例
	 */
	@Column(name = "example", nullable= true, length = 100)
	public String getExample() {
		return this.example;
	}
	
	/**
	 * 方法: 设置举例
	 *
	 * @param example 举例
	 */
	public void setExample(String example) {
		this.example = example;
	}
	
	/**
	 * 方法: 取得版本
	 *
	 * @return java.lang.Integer 版本
	 */
    @Version
	@Column(name = "version", nullable= true, length = 11)
	public Integer getVersion() {
		return this.version;
	}
	
	/**
	 * 方法: 设置版本
	 *
	 * @param version 版本
	 */
	public void setVersion(Integer version) {
		this.version = version;
	}
}